package vista;

import java.awt.Font;
import java.awt.event.ActionListener;
import java.awt.event.KeyListener;
import java.awt.event.WindowListener;
import java.awt.event.FocusListener;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JTextField;
import javax.swing.JToolBar;
import javax.swing.SwingConstants;
import javax.swing.ImageIcon;
import javax.swing.JTable;
import javax.swing.JScrollPane;
import javax.swing.table.TableCellEditor;
import javax.swing.table.TableColumnModel;
import javax.swing.table.TableModel;
import java.io.File;


public class VentanaProducto extends JFrame {

	 private JButton btnGuardar,btnModificar,btnEliminar,btnCancelar,btnSalir;
	 private JTextField txtCodProducto,txtNombreCorto, txtNombreLargo,txtPorcGanancia;
	 private JComboBox cbCategoria;
	 private  JScrollPane scroll;
	 private JTable tabla;
	 private JLabel lblTotalPrecio;
	 
	 public VentanaProducto(){
		
	     ImageIcon imgGuardar= new ImageIcon(getClass().getResource("imagenes" + File.separator + "guardar.png"));
	     ImageIcon imgModificar= new ImageIcon(getClass().getResource("imagenes" + File.separator + "modificar.png"));
	     ImageIcon imgEliminar= new ImageIcon(getClass().getResource("imagenes" + File.separator + "eliminar.png"));
	     ImageIcon imgCancelar= new ImageIcon(getClass().getResource("imagenes" + File.separator + "cancelar.png"));
	     ImageIcon imgSalir= new ImageIcon(getClass().getResource("imagenes" + File.separator + "salir.png"));
	     
	     PanelFondo panelFondo= new PanelFondo();
	     PanelFrente panelFrente= new PanelFrente();
	     
	     JLabel lblTitulo= new JLabel("PRODUCTOS");
	     JLabel lblCodProducto= new JLabel("Codigo:");
	     JLabel lblNombreCorto= new JLabel("Nombre corto:");
	     JLabel lblLargo= new JLabel("Nombre Largo:");
	     JLabel lblCategoria= new JLabel("Categoria :");
	     JLabel lblPorcGanancia= new JLabel("Porc Ganancia:");
	     JLabel lblIngredientes= new JLabel("Ingredientes del Producto");
	     JLabel lblTotal= new JLabel("TOTAL BSF:");
	     lblTotalPrecio= new JLabel("0.0");   
	     
	     JToolBar barraHerramientas= new JToolBar();
	     barraHerramientas.setFloatable(false);
	     barraHerramientas.setOpaque(false);
	     barraHerramientas.setBorderPainted(false);
	     
	     cbCategoria= new JComboBox();
	     tabla= new JTable();
         scroll = new JScrollPane(tabla,JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
	     

	     btnGuardar= new JButton("GUARDAR",imgGuardar);
	     btnModificar= new JButton("MODIFICAR",imgModificar);
	     btnEliminar= new JButton("ELIMINAR",imgEliminar);
	     btnCancelar= new JButton("CANCELAR",imgCancelar);
	     btnSalir= new JButton("SALIR",imgSalir);
	    
	     txtCodProducto = new JTextField();
	     txtNombreCorto= new JTextField();
	     txtNombreLargo= new JTextField();
	     txtPorcGanancia= new JTextField();
	     
	     txtCodProducto.setName("txtCodProducto");
	     txtNombreCorto.setName("txtNombreCorto");
	     txtNombreLargo.setName("txtNombreLargo");
	     txtPorcGanancia.setName("txtPorcGanancia");

	     btnGuardar.setVerticalTextPosition(SwingConstants.BOTTOM);
	     btnGuardar.setHorizontalTextPosition(SwingConstants.CENTER);
	     btnGuardar.setOpaque(false);
	     btnGuardar.setBorderPainted(false);
	     
	     btnModificar.setVerticalTextPosition(SwingConstants.BOTTOM);
	     btnModificar.setHorizontalTextPosition(SwingConstants.CENTER);
	     btnModificar.setOpaque(false);
	     btnModificar.setBorderPainted(false);

	     btnEliminar.setVerticalTextPosition(SwingConstants.BOTTOM);
	     btnEliminar.setHorizontalTextPosition(SwingConstants.CENTER);
	     btnEliminar.setOpaque(false);
	     btnEliminar.setBorderPainted(false);

	     btnCancelar.setVerticalTextPosition(SwingConstants.BOTTOM);
	     btnCancelar.setHorizontalTextPosition(SwingConstants.CENTER);
	     btnCancelar.setOpaque(false);
	     btnCancelar.setBorderPainted(false);
	        
	     btnSalir.setVerticalTextPosition(SwingConstants.BOTTOM);
	     btnSalir.setHorizontalTextPosition(SwingConstants.CENTER);
	     btnSalir.setOpaque(false);
	     btnSalir.setBorderPainted(false);
	     
	     barraHerramientas.add(btnGuardar);
	     barraHerramientas.addSeparator();
	     barraHerramientas.addSeparator();
	     barraHerramientas.add(btnModificar);
	     barraHerramientas.addSeparator();
	     barraHerramientas.addSeparator();
	     barraHerramientas.add(btnEliminar);
	     barraHerramientas.addSeparator();
	     barraHerramientas.addSeparator();
	     barraHerramientas.add(btnCancelar);
	     barraHerramientas.addSeparator();
	     barraHerramientas.addSeparator();
	     barraHerramientas.add(btnSalir);
	     
	     lblTitulo.setFont(new Font(Font.SERIF,Font.BOLD,20));
	     panelFondo.add(lblTitulo);
         lblTitulo.setBounds(290, 10,180, 30);
	     
	     panelFrente.setLayout(null);
	    
	     panelFrente.add(lblCodProducto);
	     lblCodProducto.setBounds(20, 20, 150, 20);
	     lblCodProducto.setFont(new Font(Font.DIALOG,Font.BOLD,15));

	     panelFrente.add(lblNombreCorto);
	     lblNombreCorto.setBounds(290, 20, 150, 20);
	     lblNombreCorto.setFont(new Font(Font.DIALOG,Font.BOLD,15));
		 
	     panelFrente.add(lblLargo);
	     lblLargo.setBounds(20, 60, 150, 20);
	     lblLargo.setFont(new Font(Font.DIALOG,Font.BOLD,15));
	     
	     panelFrente.add(lblCategoria);
	     lblCategoria.setBounds(20, 100, 150, 20);
	     lblCategoria.setFont(new Font(Font.DIALOG,Font.BOLD,15));
	          
	     panelFrente.add(lblPorcGanancia);
	     lblPorcGanancia.setBounds(370, 60, 150, 20);
	     lblPorcGanancia.setFont(new Font(Font.DIALOG,Font.BOLD,15));
	     
	     panelFrente.add(lblIngredientes);
	     lblIngredientes.setBounds(220, 150, 200, 20);
	     lblIngredientes.setFont(new Font(Font.DIALOG,Font.BOLD,15));
	     
	     panelFrente.add(lblTotal);
	     lblTotal.setBounds(220, 320, 130, 20);
	     lblTotal.setFont(new Font(Font.DIALOG,Font.BOLD,15));
	     
	     panelFrente.add(lblTotalPrecio);
	     lblTotalPrecio.setBounds(320, 320, 100, 20);
	     lblTotalPrecio.setFont(new Font(Font.DIALOG,Font.BOLD,15));
	     
	     panelFrente.add(txtCodProducto); 
	     txtCodProducto.setBounds(100, 20, 150, 25);

	     panelFrente.add(txtNombreCorto);
	     txtNombreCorto.setBounds(400, 20, 200, 25);

	     panelFrente.add(txtNombreLargo);
         txtNombreLargo.setBounds(140, 60, 210, 25);
         
         panelFrente.add(txtPorcGanancia);
         txtPorcGanancia.setBounds(490, 60, 110, 25);
         
         panelFrente.add(cbCategoria);
         cbCategoria.setBounds(120,100, 150, 25);
         
         panelFrente.add(barraHerramientas);
         barraHerramientas.setBounds(80, 370, 500, 90);
         
         panelFrente.add(scroll);
         scroll.setBounds(20, 180,580, 120);
         
         panelFondo.setLayout(null);  

         panelFondo.add(panelFrente);

         add(panelFondo);
         setSize(720,600);
         panelFrente.setBounds(40, 50, 625, 480);
         setLocationRelativeTo(null);
         setVisible(true);
	 }
	 
	 public void addListener(ActionListener escuchador)
	 {
	    	btnGuardar.addActionListener(escuchador);
	        btnEliminar.addActionListener(escuchador);
	        btnModificar.addActionListener(escuchador);
	        btnCancelar.addActionListener(escuchador);
	        btnSalir.addActionListener(escuchador);
	     
	    
	  }
	 
	 public void addListener(FocusListener escuchador)
	 {
		 txtCodProducto.addFocusListener(escuchador);
	     
	    
	  }
	 
	 
	 
	 public void addListener(WindowListener escuchador)
	 {
		 this.addWindowListener(escuchador);
	 }
	 
	 public void addListener(KeyListener escuchador)
	 {
		 txtCodProducto.addKeyListener(escuchador);
		 txtNombreCorto.addKeyListener(escuchador);
		 txtNombreLargo.addKeyListener(escuchador);
		 txtPorcGanancia.addKeyListener(escuchador);
	 }
	 
	 
	 public void asignarDatosTabla(TableModel modeloTabla)
	 {
		 tabla.setModel(modeloTabla);
	 }
	 
	 public TableColumnModel getTableColumnModel()
	 {
		 return tabla.getColumnModel();
	 }
	 
	 public void asignarPrecioTotal(double total)
	 {
		lblTotalPrecio.setText(String.valueOf(total)); 
	 }
	 
	 public double getPrecioTotal()
	 {
		return Double.parseDouble(lblTotalPrecio.getText()); 
	 }
	 
	 public float getPorcGanancia()
	 {
		 float valor=0.0f;
		 
		 try
		 {
		    valor= Float.parseFloat((txtPorcGanancia.getText()));	 
		 }
		 catch(NumberFormatException e)
		 {
			 valor=0.0f;
		 }
		 
		 return valor;
	 }
	 public void asignarValoresEdicionTabla(int row,int col)
	 {
		  if (tabla.isEditing())
		  {
		    tabla.setValueAt(tabla.getCellEditor().getCellEditorValue(),row, col);
		  }
         
	 }
	 
	 public void actualizarInfo(String codProducto,String nombreCorto,String nombreLargo,float porc)
	 {
		 txtCodProducto.setText(codProducto);
		 txtNombreCorto.setText(nombreCorto);
		 txtNombreLargo.setText(nombreLargo);
		 txtPorcGanancia.setText(String.valueOf(porc));
		 
		
	 }
	 
	 public void actualizarInfoCategoria(String categoria)
	 {
		 if (categoria!=null)
		    cbCategoria.setSelectedItem(categoria);
	 }
	
	 public void actualizarCombo(Object[] objetos)
	 {
		 cbCategoria.removeAllItems();
		 for (Object obj:objetos)
		 {
			 cbCategoria.addItem(obj);
		 }
		 
	 }
	 
	  public void habilitarBotonActualizar(String boton)
	  {
	    	if (btnGuardar.getActionCommand().equalsIgnoreCase(boton))
	    	   btnGuardar.setEnabled(true);
	    	else if (btnEliminar.getActionCommand().equalsIgnoreCase(boton))
	    	   btnEliminar.setEnabled(true);
	    	else if (btnModificar.getActionCommand().equalsIgnoreCase(boton))
	    	   btnModificar.setEnabled(true);
	    	else if (btnCancelar.getActionCommand().equalsIgnoreCase(boton))
	     	   btnCancelar.setEnabled(true);
	    	
	  }
	  
	  public void deshabilitarBotonActualizar(String boton)
	  {
	    	if (btnGuardar.getActionCommand().equalsIgnoreCase(boton))
	    	   btnGuardar.setEnabled(false);
	    	else if (btnEliminar.getActionCommand().equalsIgnoreCase(boton))
	    	   btnEliminar.setEnabled(false);
	    	else if (btnModificar.getActionCommand().equalsIgnoreCase(boton))
	    	   btnModificar.setEnabled(false);
	    	else if (btnCancelar.getActionCommand().equalsIgnoreCase(boton))
	     	   btnCancelar.setEnabled(false);
	    	
	  }
	 
	  
	  public String getCodProducto()
	  {
		  return txtCodProducto.getText();
	  }
	  
	  public String getNombreCorto()
	  {
		  return txtNombreCorto.getText();
	  }
	  
	  public String getNombreLargo()
	  {
		  return txtNombreLargo.getText();
	  }
	  
	  
	  public String getCategoria()
	  {
		  return (String)cbCategoria.getSelectedItem();
	  }
	  
	  public void limpiarTextos()
	  {
	      txtNombreCorto.setText("");
		  txtNombreLargo.setText("");
		  txtPorcGanancia.setText(String.valueOf(0.0f)); 
	  }
	  
	  public void asignarFocoCodigo()
	  {
		  txtCodProducto.requestFocus();
	  }
	 
}
